Advancement of technology in the world of communications and computing has significantly advanced entertainment systems and enhanced user experiences. In general, entertainment systems strive to realistically recast an environment in which an event or game action occurs. Such trend can also involve recreating the environment based on a user's expectations or desires. Moreover, recent advancements in processing power and transmission capability have made it possible to recreate a realistic setting in relatively small computer enabled systems.
Typically, the entertainment industry offers a variety of passive and interactive forms of settings for amusements, which often are tailored depending on target audience. For example, different video games and television events or programs are specifically marketed to specific life styles, target age groups, and the like. Similarly, head mounted computer displays enable users to experience a graphical environment, wherein a user can enjoy an illusion of presence in the displayed environment. In general, such software for generating virtual reality environments have typically been employed for training and entertaining of personnel, wherein relatively inexpensive computing devices enable 3D virtual reality user interfaces. These 3D virtual reality worlds allow a user to explore a simulated environment. Such environments can further include views from an ordinary street scene with walkways, roads, and buildings to a completely fictitious landscape of an outer space planet. In general, the end goal with virtual reality interfaces still remains to provide the user the most realistic experience possible.
Rendering and displaying 3-D graphics typically involves a plurality of calculations and computations. For example, to render a 3-D object, a set of coordinate points or vertices that define an object to be rendered is initially formed, wherein vertices are subsequently joined to form polygons and define surfaces. Once such defining vertices are formed, a transformation from an object or model frame of reference to a world frame of reference and subsequently to 2-D coordinate is completed. Throughout such procedure, vertices can be rotated, scaled, eliminated or clipped (if they fall outside of a viewable area) lit by various lighting schemes and sources, colorized, and the like. Such processes for rendering and displaying a 3-D object can be computationally intensive and can involve a large number of operations for each vertex.
For example, complexities can arise within the shading process that describes appearance of a material at any point of a 1-D, 2-D or 3-D space, via a function (e.g., procedural shader) in a shading parameter space. In general, the object is “immersed” in the original 1-D, 2-D or 3-D space and the values of shading parameters at a given point of surface are defined as a result of procedural shading function at such point. For instance, procedural shaders that approximate appearance of wood, marble or other natural materials have been developed. Moreover, by passing source code designed to work with a shader into an application, a shader becomes an object that the application can create/utilize in order to facilitate the efficient drawing of complex video graphics—for example, as vertex shaders, geometry shaders, and/or pixel shaders.
Such Vertex, geometry and/or pixel shaders can commonly be implemented wholly as software code, and/or as a combination of more rigid pieces of hardware with software for controlling the hardware. (GPU), which can run on the host CPU. These implementations frequently are contained in a CPU or emulated via employing a system's CPU. For example, hardware implementations can directly integrate a CPU chip, to perform the processing functionality required of shading tasks. Moreover, pixel and vertex shaders can be implemented as specialized and programmable hardware components. Such vertex and pixel shader chips are highly specialized and typically do not behave as prior CPU hardware implementations. Also, GPUs are increasing speed at a faster rate when compared to advancements in CPUs. Accordingly, GPU performance is desired to be decoupled from CPU performance.